package com.example.demo03

import android.app.Activity
import android.content.ContentValues.TAG
import android.content.Intent
import android.graphics.Bitmap
import android.os.Bundle
import android.provider.MediaStore
import android.util.Log
import android.widget.Button
import android.widget.EditText
import android.widget.ImageView
import android.widget.TextView
import android.widget.Toast
import androidx.activity.enableEdgeToEdge
import androidx.activity.result.contract.ActivityResultContracts
import androidx.activity.result.registerForActivityResult
import androidx.appcompat.app.AppCompatActivity
import androidx.core.view.ViewCompat
import androidx.core.view.WindowInsetsCompat
import com.example.demo03.R.id.editText

const val FIRST_MSG = "FIRST_MSG"
const val RETURN_MSG = "RETURN_MSG"
class MainActivity : AppCompatActivity() {

    // 1. 注册一个Activity结果监听器（替代startActivityForResult）
    private val startForResult = registerForActivityResult(ActivityResultContracts.StartActivityForResult()) { result ->
        // 当SecondActivity返回结果时，会回调到这里
        // 判断结果是否成功（resultCode == RESULT_OK）
        if (result.resultCode == Activity.RESULT_OK) {
            // 获取返回的Intent数据
            val data = result.data
            // 从data中解析返回的值（假设键是"RETURN_MSG"）
            val returnMsg = data?.getStringExtra(RETURN_MSG) ?: "没有返回数据"

            // 处理返回的数据（例如显示到日志或TextView）
            println("从SecondActivity返回的数据：$returnMsg")
            // 如果有TextView，可设置显示：
             findViewById<TextView>(R.id.textView).text = returnMsg
        }
    }

    // 1. 注册“启动相机并接收结果”的监听器
    private val takePictureLauncher = registerForActivityResult(
        ActivityResultContracts.StartActivityForResult()
    ) { result ->
        // 拍照完成后，回调到这里处理结果
        if (result.resultCode == Activity.RESULT_OK) {
            // 获取返回的 Intent 数据
            val data: Intent? = result.data
            // 从 Intent 中提取拍照的 Bitmap（系统相机返回的是缩略图）
            val imageBitmap = data?.extras?.get("data") as? Bitmap
            // 将 Bitmap 设置到 ImageView 显示
            imageBitmap?.let {
                val imageView: ImageView = findViewById(R.id.imageView)
                imageView.setImageBitmap(it)
            }
        }
    }

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        enableEdgeToEdge()
        setContentView(R.layout.activity_main)
        // 一、正向传参
        // 1. 找到布局中的按钮（通过id：）
        val goToSecondBtn: Button = findViewById(R.id.first)

        val editText: EditText = findViewById(R.id.editText)

        // 2. 设置按钮点击事件
        goToSecondBtn.setOnClickListener {
            // 3. 创建Intent对象，指定从当前Activity跳转到SecondActivity
            val intent = Intent(this, SecondActivity::class.java)
            // 传参
            intent.putExtra(FIRST_MSG,editText.text.toString())
            // 4. 启动目标Activity
            startActivity(intent)
        }
        // 二、反向传参
        val goToThirdBtn: Button = findViewById(R.id.second)

        goToThirdBtn.setOnClickListener {
            val intent = Intent(this, ThirdActivity::class.java)
            startForResult.launch(intent)
        }

        // 三、拍照



        // 2. 找到“拍照”按钮
        val photographButton: Button = findViewById(R.id.photograph)
        // 3. 按钮点击事件：启动系统相机
        photographButton.setOnClickListener {
            dispatchTakePictureIntent()
        }


        // 四、启动计时器的页面
        val goToFourthlyBtn: Button = findViewById(R.id.fourthly)

        // 2. 设置按钮点击事件
        goToFourthlyBtn.setOnClickListener {
            // 3. 创建Intent对象，指定从当前Activity跳转到SecondActivity
            val intent = Intent(this, FourthlyActivity::class.java)
            // 4. 启动目标Activity
            startActivity(intent)
        }


        ViewCompat.setOnApplyWindowInsetsListener(findViewById(R.id.main)) { v, insets ->
            val systemBars = insets.getInsets(WindowInsetsCompat.Type.systemBars())
            v.setPadding(systemBars.left, systemBars.top, systemBars.right, systemBars.bottom)
            insets
        }
    }




    // 启动系统相机的方法
    private fun dispatchTakePictureIntent() {
        val takePictureIntent = Intent(MediaStore.ACTION_IMAGE_CAPTURE)
        // 检查是否有应用能处理“拍照”Intent（防止无相机应用时崩溃）
//        if (takePictureIntent.resolveActivity(packageManager) != null) {
//            // 通过注册的监听器启动相机
//            takePictureLauncher.launch(takePictureIntent,)
//        }
        try {
            takePictureLauncher.launch(takePictureIntent)
        } catch (e: Exception) {
            Log.e(TAG, "启动相机失败：${e.message}")
            Toast.makeText(this, "启动相机失败", Toast.LENGTH_SHORT).show()
        }



    }
}